Why shared development environments are a bad idea
Advantages:
- You only need to administrate a single box.
- You can buy a big server, and users can take advantage of this for sporadic compute intensive jobs like compiling.
Disadvantages:
- It introduces a single point of failure, if the server goes offline no one can work.
- Users don’t have the freedom to use there own software. Users can’t always select the version of a tool they need.
- It doesn’t scale. As more users are added you need a bigger and bigger server. Eventually you need to add more servers (so why not just give each developer a desktop?).
- When a user deletes a file the whole server needs to be taken offline (yes this happened).
- Users developing software that needs access to a system resource (e.g. a web server running on port 80) may not be able to get exclusive access to that resource.
- Performance analysis becomes more problematic when other software is performing IO/memory access etc.. It’s not possible to isolate this on a shared system.
- If you have a tool which requires root, it becomes a security risk to give users access to that tool.
- If a user is taxing the system they can slow down other users tasks (particularly in the case of IO intensive work.